package com.hik.utils;

import com.alibaba.fastjson.JSONObject;
import com.hikvision.vcms.sdk.http.ApiHttpClient;

public class HikHcUtils {
    private static  final String IP="https://192.168.0.99:443/vcms/api/v1/";
    private static  final String APPKYY="f04bc3e2";
    private static final String  APPSECURITY="dd94b70b6b094c9eb389af4abdd80725";

    /**
     * 会场POST方法
     * @param urlStr
     * @param json
     * @return
     */
    public static JSONObject hcPost(String urlStr,String json){
        ApiHttpClient apiHttpClient=new ApiHttpClient(APPKYY,APPSECURITY);
        JSONObject jsonObject=null;
        try {
            jsonObject=apiHttpClient.doPost(IP+"terminal/"+urlStr,json);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return jsonObject;
    }

    /**
     * 会议POST方法
     * @param urlStr
     * @param json
     * @return
     */
    public static JSONObject hyPost(String urlStr,String json){
        ApiHttpClient apiHttpClient=new ApiHttpClient(APPKYY,APPSECURITY);
        JSONObject jsonObject=null;
        try {
            jsonObject=apiHttpClient.doPost(IP+"conference/"+urlStr,json);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return jsonObject;
    }

    /**
     * 会议方法之获取会议视频rtspUrL路劲
     * @param indexCode
     * @return
     */
    public static JSONObject  hyGetUrl(String indexCode){
        ApiHttpClient apiHttpClient=new ApiHttpClient(APPKYY,APPSECURITY);
        JSONObject jsonObject=null;
        try {
            jsonObject=apiHttpClient.doGet(IP+"control/"+indexCode+"/videoRtspUrl");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return jsonObject;
    }
    /**
     * 会议控制POST方法
     * @param urlStr
     * @param json
     * @return
     */
    public static JSONObject hyKzPost(String urlStr,String json){
        ApiHttpClient apiHttpClient=new ApiHttpClient(APPKYY,APPSECURITY);
        JSONObject jsonObject=null;
        try {
            jsonObject=apiHttpClient.doPost(IP+"control/"+urlStr,json);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return jsonObject;
    }
    /**
     * mcu的post方法
     * @param urlStr
     * @param json
     * @return
     */
    public static JSONObject mcuPost(String urlStr,String json){
        ApiHttpClient apiHttpClient=new ApiHttpClient(APPKYY,APPSECURITY);
        JSONObject jsonObject=null;
        try {
            jsonObject=apiHttpClient.doPost(IP+"mcu/"+urlStr,json);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return jsonObject;
    }

    /**
     * 获取密码加密公钥
     * @return
     */
    public static String  hcGetKey(){
        ApiHttpClient apiHttpClient=new ApiHttpClient(APPKYY,APPSECURITY);
        JSONObject jsonObject=null;
        try {
            jsonObject=apiHttpClient.doGet(IP+"getPublicKey");
        } catch (Exception e) {
            e.printStackTrace();
        }
        String key=jsonObject.getString("data");
        return key;
    }

    /**
     *会议资源--分页查询会场资源
     * @param json "{' pageNo': 1,'pageSize': 10}"
     * @return查询会场资源（会议资源）
     */
    public static JSONObject hc(String json){
        return hcPost("page",json);
    }

    /**
     *添加/修改会场资源人员
     * @param json
     * {
     *  "terminals": [
     *  {
     *  "deviceType": "1",
     *  "port": 1720,
     *  "IP": "10.17.38.16",
     *  "name": "终端1",
     *  "remark": "",
     *  "rtspUrl": "",
     *  "treatyType": "H323",
     *  "userName": "admin",
     *  "userPwd": "sATz8Jz60uRHdw=="
     *  }]}
     * @return
     */
    public static JSONObject hcAdd(String json){
        return hcPost("merge",json);
    }

    /**
     * 会议资源--删除会场
     * @param json
     * {
     *  "indexCodes": ["898D6961-D65C-4895-96F4-595F162AF6CF","898D6961-
     * D65C-4895-96F4-595F162AF6CD"] }
     * @return
     */
    public static JSONObject hcDelete(String json){
        return hcPost("delete",json);
    }

    /**
     * 会议资源--mcu分页查询
     * @param json HIKPage json数据
     * @return
     */
    public static JSONObject mcuSelect(String json){
        return mcuPost("page",json);
    }

    /**
     * 会议管理--查询会议，默认为当前第一页，每页十条数据
     * @param json "{'title':'','startTime':'','endTime':'','status':''}"
     * @return
     */
    public static  JSONObject hySelect(String json){
        return hyPost("page",json);
    }

    /**
     * 会议管理--会议详情
     * @param indexCode
     * @return
     */
    public static  JSONObject hyXQ(String indexCode){
        return hyPost(indexCode,null);
    }

    /**
     * 会议管理--删除会议
     * @param indexCode
     * @return
     */
    public static  JSONObject hyDeletel(String indexCode){
        return hyPost(indexCode+"/delete",null);
    }

    /**
     * 会议管理--添加会议
     * @param json
     * @return
     */
    public  static  JSONObject hyAdd(String json){
        return  hyPost("add",json);
    }


    /**
     * 会议控制之邀请会场
     * @param indexCode
     * @param json
     * @return
     */
    public static JSONObject hyKzHCYQ(String indexCode,String json){
        return hyKzPost(indexCode+"/terminal/join",json);
    }

    /**
     * 会议控制之剔除会场
     * @param indexCode
     * @param json
     * @return
     */
    public  static JSONObject hyKZHCTC(String indexCode,String json){
        return hyKzPost(indexCode+"/terminal/remove",json);
    }
    /**
     * 会议控制之开启会场
     * @param indexCode
     * @param
     * @return
     */
    public  static JSONObject hyStart(String indexCode){
        return hyKzPost(indexCode+"/start",null);
    }
    /**
     * 会议控制之关闭会场
     * @param indexCode
     * @param
     * @returnnd
     */
    public  static JSONObject hyEnd(String indexCode){
        return hyKzPost(indexCode+"/end",null);
    }
    /**
     * 会议控制之画面设置
     * @param indexCode
     * @param json
     * @returnnd
     */
    public  static JSONObject hyHmsz(String indexCode,String json){
        return hyKzPost(indexCode+"/layout",json);
    }
    /**
     * 会议控制之延长会议
     * @param indexCode
     * @param json
     * @returnnd
     */
    public  static JSONObject hyYc(String indexCode,String json){
        return hyKzPost(indexCode+"/prolong",json);
    }
    /**
     * 会议控制之打开关闭麦克风
     * @param indexCode
     * @param json
     * @returnnd
     */
    public  static JSONObject hyMkf(String indexCode,String json){
        return hyKzPost(indexCode+"/terminal/audioInput",json);
    }
    /**
     * 会议控制之打开关闭扬声器
     * @param indexCode
     * @param json
     * @returnnd
     */
    public  static JSONObject hyYsq(String indexCode,String json){
        return hyKzPost(indexCode+"/terminal/mute",json);
    }
}
